package com.woniu.controller.operation;

import com.woniu.controller.BaseController;
import com.woniu.entity.Result;
import com.woniu.mapper.OrderMapper;
import com.woniu.pojo.Order;
import com.woniu.service.IGetSpaceStatusServices;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.text.ParseException;
import java.util.Date;

@RestController
@Api(tags = "获取泊位id")
@RequestMapping("/getSpaceId")
public class GetSpaceIdController extends BaseController {
    @Resource
    private IGetSpaceStatusServices getSpaceStatusServices;
    @Resource
    private OrderMapper orderMapper;
    //检验泊位是否正确，查询此泊位的有无车，通过地磁状态查询（无车返回重新检测/重新驶入），
    // 有车则查询是否有正在进行的订单（有则返回泊位已经被占用），
    // 无正在进行的订单返回前面创建的订单的相关信息及停车规则。
    //后端返回信息：返回上述相关信息
    @GetMapping("/gets/{spaceId}/{userId}")
    @ApiOperation("输入泊位号")
    public Result getSpaceStatus(@PathVariable Long spaceId,
                             @PathVariable Long userId) throws ParseException {
        //直接吧参数传下去

        Result result = getSpaceStatusServices.getSpaceStatus(spaceId, userId);

        return result;
    }
    //前端发送信息：用户id（user_id）及订单号（order_id）
    //后端处理过程：将用户id绑定到订单，订单状态改为进行中
    //后端返回信息：返回订单相关信息用于页面显示
    @GetMapping("/sure/{userId}/{orderId}")
    @ApiOperation("确认订单")
    public Result sureOrder(@PathVariable Long userId,@PathVariable Long orderId){
        Result result = getSpaceStatusServices.getOrder(userId,orderId );
        return result;
    }
    @GetMapping("/return")
    @ApiOperation("订单支付成功的回调，不能单独测")
    public void successReturn(String out_trade_no){
        System.out.println("支付成功"+out_trade_no);
        Long orderId = Long.valueOf(out_trade_no);
        //拿到订单id了，那我去吧订单状态改成已完成，吧订单的支付金额改成订单的money就得了呗。
        Order order = orderMapper.selectById(orderId);
        //设置订单的支付金额
        order.setPayMoney(order.getMoney());
        //设置订单的支付时间
        order.setPayTime(new Date());
        //设置订单的支付方式为支付宝
        order.setPayWay("1");
        //设置订单的状态为已完成
        order.setStatus("3");
        //吧这个订单的修改到数据库去
        orderMapper.updateById(order);

    }
}
